package com.navcoo.yidaaddproapi.pojo.dao;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import jakarta.validation.constraints.NotNull;
import lombok.Builder;
import lombok.Data;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 用户DAO
 *
 * @author Navcoo
 * @date 2024-04-24
 */
@Data
@Builder
@TableName("user_info")
public class UserDAO {

    /**
     * 用户Id
     * 主键Id
     */
    @TableId(value = "user_id",type = IdType.ASSIGN_ID)
    private String userId;

    /**
     * 姓名
     * 必填
     */
    @TableField(value = "user_name")
    @NotNull
    private String userName;

    /**
     * 头像
     */
    @TableField(value = "avatar")
    private String avatar;

    /**
     * 邮箱
     * 必填
     */
    @TableField(value = "user_email")
    @NotNull
    private String userEmail;

    /**
     * 密码
     * 加密
     */
    @TableField(value = "password_encrypt")
    @NotNull
    private String passwordEncrypt;


    /**
     * 手机号
     */
    @TableField(value = "phone_number")
    private String phoneNumber;

    /**
     * dingtalk帐户
     */
    @TableField(value = "dingtalk_account")
    private String dingtalkAccount;

    /**
     * 性别
     * 0:未知;1:男;2:女;
     */
    @TableField(value = "user_sex")
    @NotNull
    private Integer userSex;

    /**
     * 生日
     */
    @TableField(value = "birthday")
    private LocalDate birthday;

    /**
     * 年龄
     */
    @TableField(value = "age")
    private Integer age;

    /**
     * 公司名称
     */
    @TableField(value = "corp_name")
    private String corpName;

    /**
     * 城市
     */
    @TableField(value = "city")
    private String city;

    /**
     * 个人介绍
     */
    @TableField(value = "personal_introduction")
    private String personalIntroduction;

    /**
     * 勋章
     */
    @TableField(value = "medal")
    private String medal;

    /**
     * 等级
     */
    @TableField(value = "grade")
    @NotNull
    private Integer grade;

    /**
     * 代码数量
     */
    @TableField(value = "code_number")
    @NotNull
    private Integer codeNumber;

    /**
     * 点赞数
     */
    @TableField(value = "like_number")
    @NotNull
    private Integer likeNumber;

    /**
     * 关注我的数量
     */
    @TableField(value = "follow_me_number")
    @NotNull
    private Integer followMeNumber;

    /**
     * 我关注的数量
     */
    @TableField(value = "followed_number")
    @NotNull
    private Integer followedNumber;

    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    @NotNull
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time")
    @NotNull
    private LocalDateTime updateTime;

    /**
     * 状态
     * 0:删除;1:启用;2:停用;3:封禁;
     */
    @TableField(value = "status")
    @NotNull
    private Integer status;
}
